package ar.com.sectorwine.dto;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import ar.com.sectorwine.entities.Empresa;
import ar.com.sectorwine.entities.Publicacion;
import ar.com.sectorwine.repository.EmpresaRepository;

@Component
public class PublicacionDTOMapper {

	@Autowired
	EmpresaRepository empresaRepository;

	public Publicacion obtenerObjetoDelDominioDesdeDTO(
			PublicacionDTO publicacionDTO) {
		Publicacion newPublicacion = new Publicacion();

		newPublicacion.setId(publicacionDTO.getId());
		newPublicacion
				.setBreveDescripcion(publicacionDTO.getBreveDescripcion());
		newPublicacion.setCuerpo(publicacionDTO.getCuerpo());

		newPublicacion.setImagen(publicacionDTO.getImagen());
		newPublicacion.setTitulo(publicacionDTO.getTitulo());
		newPublicacion.setEstadoPublicacion(publicacionDTO
				.getEstadoPublicacion());
		newPublicacion.setContadorReblog(publicacionDTO.getContadorReblog());
		newPublicacion.setUsuarioCreador(publicacionDTO.getUsuarioCreador());
		String[] listaTags = publicacionDTO.getTag_split().split(",");
		ArrayList<String> tags_ = new ArrayList<String>();
		newPublicacion.setIdPublicacionFuente(publicacionDTO
				.getIdPublicacionFuente());
		for (int i = 0; i < listaTags.length; i++) {
			tags_.add(listaTags[i]);
		}
		publicacionDTO.setTag(tags_);
		newPublicacion.setIdEmpresaFuente(publicacionDTO.getIdEmpresaFuente());
		newPublicacion.setTags(publicacionDTO.getTag());
		newPublicacion.setFuente(publicacionDTO.getFuente());
		SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
		if (publicacionDTO.getFechaPublicacion() != null) {
			try {
				newPublicacion.setFechaPublicacion(sdf.parse(publicacionDTO
						.getFechaPublicacion()));

				newPublicacion.setFechaUltimaModificacion(sdf
						.parse(publicacionDTO.getFechaUltimaModificacion()));
			} catch (ParseException e) {
				newPublicacion.setFechaPublicacion(new Date());
				e.printStackTrace();
			}
		}
		return newPublicacion;
	}

	public PublicacionDTO obtenerDTOdesdeObjetoDelDominio(Publicacion pub) {
		PublicacionDTO publicacionDTO = new PublicacionDTO();
		publicacionDTO.setBreveDescripcion(pub.getBreveDescripcion());
		publicacionDTO.setCuerpo(pub.getCuerpo());
		publicacionDTO.setId(pub.getId());
		publicacionDTO.setEstadoPublicacion(pub.getEstadoPublicacion());
		publicacionDTO
				.setFechaPublicacion(pub.getFechaPublicacion().toString());
		publicacionDTO.setId(pub.getId());
		publicacionDTO.setIdEmpresa(pub.getEmpresa().getId());
		publicacionDTO.setImagen(pub.getImagen());
		publicacionDTO.setTitulo(pub.getTitulo());
		publicacionDTO.setUsuarioCreador(pub.getUsuarioCreador());
		publicacionDTO.setUrl(pub.getUrl());
		publicacionDTO.setTag(pub.getTags());
		publicacionDTO.setFuente(pub.getFuente());
		publicacionDTO.setContadorReblog(pub.getContadorReblog());
		publicacionDTO.setIdPublicacionFuente(pub.getIdPublicacionFuente());
		if (pub.getIdEmpresaFuente() != null) {
			publicacionDTO.setIdEmpresaFuente(pub.getIdEmpresaFuente());
			Empresa e = empresaRepository.findOne(pub.getIdEmpresaFuente());
			publicacionDTO.setEmpresaFuenteNombre(e.getRazonSocial());
		} else {
			publicacionDTO.setIdEmpresaFuente(pub.getEmpresa().getId());

		}

		return publicacionDTO;

	}
}
